LINQ (Language Integrated Query) আপনাকে ডেটা সংগ্রহের জন্য একাধিক উত্স থেকে ডেটা একত্রিত করতে Join অপারেশন ব্যবহার করার সুযোগ দেয়। যখন ডেটার মধ্যে একাধিক সম্পর্ক থাকে, তখন Multiple Joins ব্যবহার করে একাধিক টেবিল বা কালেকশনের মধ্যে সম্পর্ক স্থাপন করা হয়। এতে আরও জটিল এবং শক্তিশালী Complex Queries লেখা সম্ভব হয়।
Multiple Joins LINQ-এ একাধিক কালেকশন বা টেবিলের মধ্যে সম্পর্ক স্থাপন করতে ব্যবহৃত হয়, যেন একাধিক সোর্স থেকে তথ্য একত্রিত করা যায়। LINQ-এ একাধিক টেবিল বা কালেকশনকে Join করতে হলে, join
কিওয়ার্ডটি ব্যবহার করা হয় এবং তারপরে প্রতিটি যোগ করা সোর্সের সাথে সম্পর্ক স্থাপন করা হয়।
বিশেষত্ব:
ধরা যাক, আমাদের কাছে তিনটি কালেকশন: Students
, Courses
এবং Enrollments
(যেখানে Enrollments
কালেকশনটি ছাত্র এবং কোর্সের সম্পর্কের ডেটা ধারণ করে)। আমরা চাই ছাত্রদের নাম, কোর্সের নাম এবং তাদের নামকরণ অনুযায়ী কোর্সের নাম দেখতে।
// Sample Data
var students = new List<Student>
{
new Student { StudentID = 1, Name = "John" },
new Student { StudentID = 2, Name = "Jane" },
new Student { StudentID = 3, Name = "Bob" }
};
var courses = new List<Course>
{
new Course { CourseID = 1, CourseName = "Math" },
new Course { CourseID = 2, CourseName = "Science" },
new Course { CourseID = 3, CourseName = "History" }
};
var enrollments = new List<Enrollment>
{
new Enrollment { StudentID = 1, CourseID = 1 },
new Enrollment { StudentID = 1, CourseID = 2 },
new Enrollment { StudentID = 2, CourseID = 3 },
new Enrollment { StudentID = 3, CourseID = 2 }
};
// Multiple Join ব্যবহার করে Student, Course এবং Enrollment সম্পর্কিত ডেটা একত্রিত করা
var query = from student in students
join enrollment in enrollments on student.StudentID equals enrollment.StudentID
join course in courses on enrollment.CourseID equals course.CourseID
select new
{
student.Name,
course.CourseName
};
foreach (var item in query)
{
Console.WriteLine($"{item.Name} - {item.CourseName}");
}
Output:
John - Math
John - Science
Jane - History
Bob - Science
এখানে তিনটি কালেকশন (Students
, Courses
, এবং Enrollments
) একত্রিত করতে Multiple Joins ব্যবহার করা হয়েছে। ছাত্রদের নাম এবং কোর্সের নাম সম্পর্কিত ডেটা পাওয়া গেছে।
Complex Queries LINQ-এ এমন কুয়েরি যা একাধিক অপারেশন যেমন Join, GroupBy, Where, OrderBy, Select, Projection এবং অন্যান্য ফাংশন একত্রে ব্যবহার করে তৈরি করা হয়। এই ধরনের কুয়েরি ব্যবহারকারীদেরকে বিভিন্ন সোর্স থেকে ডেটা সংগ্রহ এবং বিশ্লেষণ করতে সহায়ক হয়।
বিশেষত্ব:
ধরা যাক, আমাদের একটি বিশ্ববিদ্যালয়ের ডেটা রয়েছে যেখানে ছাত্ররা কোর্সে নাম লেখায় এবং তাদের স্কোর থাকে। আমরা চাই ছাত্রদের নাম, কোর্সের নাম, এবং তাদের স্কোর জানাতে, কিন্তু শুধু সেই ছাত্রদের যাদের স্কোর ৭০ এর বেশি। এছাড়া, আমরা এই ডেটাকে কোর্সের নামে সাজাতে চাই।
// Sample Data
var students = new List<Student>
{
new Student { StudentID = 1, Name = "John" },
new Student { StudentID = 2, Name = "Jane" },
new Student { StudentID = 3, Name = "Bob" }
};
var courses = new List<Course>
{
new Course { CourseID = 1, CourseName = "Math" },
new Course { CourseID = 2, CourseName = "Science" },
new Course { CourseID = 3, CourseName = "History" }
};
var enrollments = new List<Enrollment>
{
new Enrollment { StudentID = 1, CourseID = 1, Score = 85 },
new Enrollment { StudentID = 1, CourseID = 2, Score = 90 },
new Enrollment { StudentID = 2, CourseID = 1, Score = 60 },
new Enrollment { StudentID = 2, CourseID = 3, Score = 70 },
new Enrollment { StudentID = 3, CourseID = 2, Score = 75 }
};
// Complex Query: Multiple Joins, Where, OrderBy, and Select
var query = from student in students
join enrollment in enrollments on student.StudentID equals enrollment.StudentID
join course in courses on enrollment.CourseID equals course.CourseID
where enrollment.Score > 70
orderby course.CourseName
select new
{
student.Name,
course.CourseName,
enrollment.Score
};
foreach (var item in query)
{
Console.WriteLine($"{item.Name} - {item.CourseName} - {item.Score}");
}
Output:
John - Math - 85
John - Science - 90
Bob - Science - 75
এখানে Complex Query তৈরি করতে আমরা একাধিক Join, Where, OrderBy এবং Select ব্যবহার করেছি। এই কুয়েরি ছাত্রদের নাম, কোর্সের নাম এবং তাদের স্কোর বের করেছে, তবে শুধু সেই ছাত্রদের যে স্কোর ৭০ এর বেশি।
LINQ এর এই শক্তিশালী বৈশিষ্ট্যগুলির সাহায্যে, আপনি ডেটাবেস বা অন্য কোন সোর্স থেকে ডেটা নিয়ে খুব সহজেই জটিল কুয়েরি তৈরি এবং এক্সিকিউট করতে পারেন।
common.read_more